package com.jushu.storbox.database;

import java.util.List;

import android.content.Context;

import com.jushu.storbox.entities.FileFolderInfo;
import com.jushu.storbox.entities.FolderInfo;
import com.huawei.sharedrive.sdk.android.exception.ClientException;
import com.huawei.sharedrive.sdk.android.model.response.FolderResponse;

public interface ITeamSpaceFolderDao  extends IBaseDao{
	/**
	 * 插入一个文件夹
	 * 
	 * @param folderInfo
	 */
	public void insertFolder(FolderResponse folderResponse, int syncStu);

	/**
	 * 插入一个文件夹
	 * 
	 * @param folderInfo
	 */
	public FileFolderInfo insertFolders(FolderResponse folderResponse,
			int syncStu) throws ClientException;

	/**
	 * 更新一个文件夹，使用服务器对象
	 * 
	 * @param folderInfo
	 */
	public void updateFolder(FolderResponse folderResponse);

	/**
	 * 更新一个文件夹,使用本地对象
	 * 
	 * @param folderInfo
	 */
	public void updateFolder(FolderInfo folderInfo);

	/**
	 * 插入或者更新一个文件夹。如果不确认文件夹时候存在于数据库中。如果folderId为空就是插入。
	 * 
	 * @param folderInfo
	 */
	public void insertOrUpdateFolder(FolderInfo folderInfo,Context context);

	/**
	 * 获取文件夹列表。传入当前父文件夹的ID
	 * 
	 * @param folderId
	 * @return
	 */

	public List<FolderInfo> getFolderList(String folderId);

	/**
	 * 获取文件夹列表。传入当前父文件夹的ID和分页
	 * 
	 * @param flag
	 *            --0:my cloud, 1:shared
	 * @param folderId
	 * @param currentPage
	 * @return
	 */
	public List<FolderInfo> getFolderListPage(int flag, String folderId);

	/***
	 * 获取文件夹列表。传入当前父文件夹的ID和分页
	 * 
	 * @param flag
	 * @param folderId
	 * @param des
	 * @param orderBy
	 * @return
	 */
	public List<FolderInfo> getFolderListPage(int flag, String folderId,
			String des, String orderBy);

	/***
	 * 获取根据名字排序的文件夹列表。传入当前父文件夹的ID和分页
	 * 
	 * @param flag
	 * @param folderId
	 * @param des
	 * @param orderBy
	 * @return
	 */
	public List<FolderInfo> getFolderListPageOrderByName(int flag, String folderId,
			String des, String orderBy);
	
	/**
	 * 删除数据文件夹
	 * 
	 * @param id
	 */
	public void deleteFolder(String id);

	/**
	 * 
	 * 重命名（文件夹）
	 * 
	 * @param context
	 * @param name
	 */
	public void renameFolder(String name,FolderResponse folderResponse, String folderID);

	/**
	 * 移动（文件夹）
	 * 
	 * @param context
	 * @param parentID
	 * @param FolderID
	 */
	public void moveFolder(String parentID, String FolderID);

	/**
	 * 获取一个文件夹的详细信息。传入文件夹的Id
	 * 
	 * @param folderId
	 * @return
	 */
	public FolderInfo getFolderById(String folderId);

	/**
	 * 获取一个文件夹的详细信息。传入文件夹的Id
	 * 
	 * @param folderId
	 * @return
	 */
	public FileFolderInfo getFileFolderById(String folderId);

	/**
	 * 更新本地路径，
	 * 
	 * @param folderId
	 *            文件夹地址
	 * @param localPath路径地址
	 */
	public void updateLocalPath(String folderId, String localPath);

	/**
	 * 更新文件夹状态
	 * 
	 * @param status
	 *            状态
	 * @param folder
	 *            文件夹Id
	 */
	public void updateTransStatus(int status, String folderId);

	/**
	 * 更新本地是否缓存的状态
	 * 
	 * @param syncStatus
	 *            是否同步状态
	 * @param folderId
	 *            文件夹Id
	 */
	public int updateSyncStatuc(int syncStatus, String folderId);

	/**
	 * 更新最后刷新时间，默认时间是当前时间，无须传入
	 * 
	 * @param folderId
	 */
	public void updateLastRefreshTime(String folderId, long lastRefreshTime);
	
	/***
	 * 设置改变的文件夹 ： 1 ：为改变 0 ：未改变
	 * @param folderId
	 * @param changeFolderId
	 */
	public void setChangedFolderId(String folderId, String changeFolderId);
	
	/***
	 * 获取文件夹是否改变
	 * @param folderId
	 * @return
	 */
	public String getChangedFolderId(String folderId);
	
	/**
	 * 获取文件夹最后刷新时间。
	 * 
	 * @param folderId
	 * @return
	 */
	public long getLastRefreshTime(String folderId);

	/**
	 * 删除所有数据
	 */
	public void deleteAll();

	/**
	 * 获取一个文件夹的详细信息。传入文件夹的Id
	 * 
	 * @param folderId
	 * @return
	 */
	public FileFolderInfo getFolderByName(String folderName);
	
	public List<FileFolderInfo> getSearchFolderList(String fileName);
	
	public String getTeamSpaceId();
	
	public void setTeamSpaceId(String teamspaceid);
}
